package algorithm.poj.p2000;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLDecoder;
import java.util.Arrays;


/**
 * 分析：
 * 
 * 实现：
 * 
 * 经验和教训：
 * 问题不能想复杂了！！！
 * 理解题意很重要！
 * 
 * 错误理解：
 * 只要找到一个S操作，该操作作用到密文上，获得的字符串是明文字符串的一个排列就OK了！
 * 
 * 正确理解：
 * 只要两个字符串中，字符出现的频率一直就可以。
 * 
 * @author wong.tong@gmail.com
 *
 */
public class P2159 {

	public static void main(String[] args) throws Exception {

		InputStream input = null;
		if (false) {
			input = System.in;
		} else {
			URL url = P2159.class.getResource("P2159.txt");
			File file = new File(URLDecoder.decode(url.getPath(), "UTF-8"));
			input = new FileInputStream(file);
		}
		
		BufferedReader stdin = new BufferedReader(new InputStreamReader(input));

		char[] original = stdin.readLine().trim().toCharArray();
		char[] ciphered = stdin.readLine().trim().toCharArray();
        
        System.out.println(check(original, ciphered)?"YES":"NO");
	}

	private static boolean check(char[] original, char[] ciphered) {
		
		if (original.length != ciphered.length) {
			return false;
		}
		int[] a = new int[26];
		for (int i = 0; i < original.length; i ++) {
			a[original[i]-'A'] ++;
		}
		Arrays.sort(a);
		
		int[] b = new int[26];
		for (int i = 0; i < ciphered.length; i ++) {
			b[ciphered[i]-'A'] ++;
		}
		Arrays.sort(b);
		
		for (int i = 0; i < 26; i ++) {
			if (a[i] != b[i]) return false;
		}
		return true;
	}
}